Move Members Refactoring 

 

ÀÌ ¼½¼ÇÀº Move Members ¸®ÆÑÅ丵 À§¿¡¼­ ´ç½Å¿¡°Ô Æ÷°ýÀûÀÎ  overview¸¦ Á¦°øÇÏ°í  how ÀÌ ¸®ÆÑÅ丵ÀÌ IntelliJ IDEA¿¡¼­ »ç¿ëµÉ ¼ö Àִ°¡¸¦ Á¦°øÇÕ´Ï´Ù.

°³¿ä


IDEA
¿¡¼­, ÀÌ ¸®ÆÑÅ丵À» »ç¿ëÇÏ¸é ´ç½ÅÀº Á¤ÀûÀÎ Çʵå, ¸Þ¼Òµå ¶Ç´Â ³»ºÎ Ŭ·¡½º¸¦ ¶Ç ´Ù¸¥ Ŭ·¡½ºÀÇ ÂÊÀ¸·Î ¿Å±é´Ï´Ù.  ±× °á°ú·Î, Á¤ÀûÀÎ ¸Þ¼Òµå, ÇÊµå ¶Ç´Â ³»ºÎ Ŭ·¡½º´Â ¶Ç ´Ù¸¥ À§Ä¡·Î ¿Å°ÜÁö°í »óÀÀÇÏ´Â ÂüÁ¶´Â ¾÷µ¥ÀÌÆ®µË´Ï´Ù.


¿¹¸¦ µé¸é, ¿ì¸®´Â ´ÙÀ½ Ŭ·¡½º¸¦ °¡Áý´Ï´Ù:

 
    public class AClass {
 
        public static void methodA() {
            //some code here
        }
        public void methodB() {
            //some code here
            methodA();
        }
    }



±×¸®°í ´ç½ÅÀº Á¤ÀûÀÎ methodA ¸¦ AnotherClass ·Î À̵¿ÇÏ´Â °ÍÀ» °áÁ¤ÇÕ´Ï´Ù, ±×°ÍÀº À̰Ͱú °°ÀÌ º¸ÀÔ´Ï´Ù:

 
    public class AnotherClass {
    }


±×¸®°í À̰ÍÀº ´ç½ÅÀÇ Å¬·¡½º°¡ ¸®ÆÑÅ丵À» µ¹ºÁÁÙ ¹æ¹ýÀÔ´Ï´Ù:

 
    public class AClass {
 
            public void methodB() {
                //some code here
                AnotherClass.methodA();
            }
        }
 
        ...
 
    public class AnotherClass {
 
        public static void methodA() {
            //some code here
        }
    }

 

Moving Members  


Ŭ·¡½º ¸â¹ö¸¦ ¿Å±â±â À§Çؼ­:

1.  Project º¸±â¿¡¼­:

Á¤ÀûÀÎ Çʵå/¸Þ¼Òµå/³»ºÎ Ŭ·¡½º¸¦ ¼±ÅÃÇϰí Ŭ·¡½º ¸â¹ö¸¦ ¿À¸¥ÂÊ ¹öư Ŭ¸¯ÇÏ´Â °Í¿¡ ÀÇÇØ ºÒ·ÁÁö´Â ÆË¾÷ ¸Þ´º ¿¡¼­ Refactor |  Move... ¸¦ Ŭ¸¯ÇϽʽÿÀ.


´ç½ÅÀº ¸Þ¼Òµå, ÇÊµå ¶Ç´Â ³»ºÎ Ŭ·¡½º¸¦ ¼±ÅÃÇϱâ À§ÇØ ¾î¶² ´Ù¸¥ º¸±â¸¦ »ç¿ëÇÒ ¼ö ÀÖ½À´Ï´Ù, ¿¹¸¦ µé¸é Structure.



editor ¿¡¼­ : 
À̵¿ÇÏ°Ô µÉ Á¤ÀûÀÎ Çʵå/¸Þ¼Òµå/³»ºÎ Ŭ·¡½º¿¡¼­ ij·µÀ» ¼±ÅÃÇϰí ÁÖ ¸Þ´º¿¡¼­ ¶Ç´Â ¿¡µðÅÍ¿¡¼­ ¿À¸¥ÂÊ ¹öưÀ» Ŭ¸¯ÇÏ´Â °Í¿¡ ÀÇÇØ ºÒ·ÁÁö´Â ÆË¾÷ ¸Þ´º ¿¡¼­ Refactor |  Move...¸¦ Ŭ¸¯ÇϽʽÿÀ.


´ç½ÅÀÌ Á¤ÀûÀÎ ³»ºÎ Ŭ·¡½º¸¦ ¿Å±â·Á°í Çϰí ÀÖÀ» ¶§, ¼±ÅÃÇÑ ³»ºÎ Ŭ·¡½º¸¦ À§ÇØ ¸®ÆÑÅ丵À» ¼±ÅÃÇÏ¸é ´ç½ÅÀº ´ÙÀ½ÀÇ ´ÙÀ̾ó·Î±×¸¦ º¼ °ÍÀÔ´Ï´Ù:





¸¸ÀÏ ³»ºÎ Ŭ·¡½º°¡ »óÀ§ ¼öÁØÀ¸·Î ¿Å°ÜÁö¸é  Move Inner to Upper  ¸®ÆÑÅ丵À» º¸½Ê½Ã¿À.

2.  Move Members  ´ÙÀ̾ó·Î±×°¡ ³ªÅ¸³³´Ï´Ù:

Move members from  


ÀÌ Çʵå´Â ¾î´À ¸â¹ö°¡ ¿Å°ÜÁö´ÂÁö Ŭ·¡½º¿¡ º¸¿©ÁÝ´Ï´Ù.

 

To (fully  qualified name): 


¿©±â¿¡¼­ ´ç½ÅÀº Ÿ°Ù Ŭ·¡½ºÀÇ ¿ÏÀü ¼ö½ÄµÈ À̸§À» »ý¼ºÇÒ ¼ö Àְųª,  ellipsis¹öưÀ» ´­·¯¼­ ÇÊ¿äÇÑ Å¸°Ù Ŭ·¡½º¸¦ ¹ß°ßÇϵµ·Ï Choose Destination Class ´ÙÀ̾ó·Î±×¸¦ ºÎ¸¦ ¼ö ÀÖ½À´Ï´Ù:


¸¸ÀÏ ±×·± À̸§ÀÌ ÀÖ´Â ¾î¶² Ŭ·¡½ºµµ ¾øÀ¸¸é IDEA´Â »õ·Î¿î Ŭ·¡½º¸¦ »ý¼ºÇÒ °ÍÀ» Á¦¾ÈÇÒ °ÍÀÔ´Ï´Ù.

Members to be moved  (static only)  


ÀÌ ¸ñ·Ï¿¡¼­ ´ç½ÅÀº »óÀÀÇϴ üũ ¹Ú½º¸¦ ¼±ÅÃÇÏ´Â °Í¿¡ ÀÇÇØ À̵¿µÇ´Â Ŭ·¡½º ¸â¹ö¸¦ ¼±ÅÃÇÒ ¼ö ÀÖ½À´Ï´Ù.

 

Preview usages  to be changed  

ÀÌ Ã¼Å© ¹Ú½º¸¦ ¼±ÅÃÇÏ¸é ´ç½ÅÀº ¾î¶² »ç¿ëÀÌ ¹ß°ßµÇ¾ú´ÂÁö ÃßÀûÇϰí, ±×µéÀÇ ±³Ã¼¸¦ ½ÂÀÎÇϵµ·Ï Çã¶ôÇÕ´Ï´Ù.  ÀÌ Ã¼Å© ¹Ú½º°¡ ¼±ÅõÇÁö ¾ÊÀ» ¶§, IDEA´Â ±³Ã¼ ±â´É¸¦ ÀÚµ¿ÀûÀ¸·Î ¼öÇàÇÕ´Ï´Ù.


½ÉÁö¾î üũ ¹Ú½º°¡ ¼±ÅõÇÁö ¾Ê¾ÒÀ» ¶§µµ, ¸¸ÀÏ ¹ß°ßµÈ »ç¿ëÀÌ ¾î¶² Àбâ Àü¿ë ÆÄÀÏ¿¡¼­ Á¸ÀçÇÏ¸é ±³Ã¼ »ç¿ëÀ» È®ÀÎÇÏ´Â ÇÁ·ÒÇÁÆ®°¡ ´ç½Å¿¡ ´ë±âµÉ °Í ÀÔ´Ï´Ù.


Refactoring Preview ´ÙÀ̾ó·Î±×¿¡¼­ (¸¸ÀÏ ±×°ÍÀÌ ³ªÅ¸³ª¸é) ´ç½ÅÀº ¼öÇàµÈ º¯°æÀ» ºÐ¼®ÇÒ ¼ö ÀÖ½À´Ï´Ù.  ¸®ÆÑÅ丵°ú ÇÔ²² ÁøÇàÇϱâ À§Çؼ­, Do Refactor¸¦ Ŭ¸¯ÇÕ´Ï´Ù±×·¸Áö ¾Ê´Ù¸é Cancel À» Ŭ¸¯ÇÕ´Ï´Ù. »ó¼¼ÇÑ °ÍÀ» º¸·Á¸é Refactoring Preview¸¦ º¸½Ê½Ã¿À.



3.   OK¸¦ ´©¸¨´Ï´Ù, ±×¸®°í ¿øÇÏ´Â ¸â¹ö´Â À̵¿µÉ °ÍÀÔ´Ï´Ù.

4.   ¸â¹ö¸¦ À̵¿ÇÏ·Á°í ½ÃµµÇϸé, ´ç½ÅÀÌ Á¤ÀûÀÎ ¸Þ¼Òµå/Çʵå/³»ºÎ Ŭ·¡½º(¿¹¸¦ µé¸é ±×µéÀº °³ÀÎÀû ¶Ç´Â ·ÎÄà ÆÐŰÁö°¡ µÉ ¼ö ÀÖ½À´Ï´Ù)¸¦ À̵¿Çϱ⸦ ¿øÇÒ ¶§ ´ç½ÅÀº ´Ù¸¥ ¸Þ¼Òµå ¶Ç´Â ³»ºÎ Ŭ·¡½º(¿¹¸¦ µé¸é, °³ÀÎÀûÀÎ ¶Ç´Â ·ÎÄà ÆÐŰÁö)¿¡¼­ ±×¸®°í ±×µéÀÇ ¼Ò½º À§Ä¡¸¦ ó¸®ÇÏÁö¸¸ ¸®ÆÑÅ丵 ÈÄ¿¡ ±×°÷¿¡¼­ º¸ÀÌÁö ¾ÊÀ» ¹Ý´ë¿¡¼­ ¿µÇâÀ» ¹Þ´Â Á¤ÀûÀÎ ¸Þ¼Òµå/Çʵå/³»ºÎ Ŭ·¡½º°¡ Àç À§Ä¡ÇÏ·Á°í ÇÏ´Â ¹®Á¦¿¡ ºÎµúÄ¥Áöµµ ¸ð¸¨´Ï´Ù. ±×¸®°í °ü·ÃµÈ ÄÚµå´Â À̵¿µÇÁö ¾Ê½À´Ï´Ù

 

¿¹¸¦ µé¸é:

 
public class AClass {
        private static int a = 0;
 
        public static void f1(){
            a = 1;
            f2();
        }
 
        private static void f2(){
            //some code here
        }
    }
 

¿©±â ´ç½ÅÀÌ ¸Þ¼Òµå f2()°¡ ¾Æ´Ñ ¸Þ¼Òµå f1()À» À̵¿½ÃŰ·Á°í ÇÕ´Ï´Ù.

±×¶§ ´ÙÀ½ÀÇ Problems Detected ´ÙÀ̾ó·Î±×°¡ ³ªÅ¸³³´Ï´Ù.




¸¸ÀÏ ´ç½ÅÀÌ Cancel (µðÆúÆ®)¸¦ ´©¸£¸é, ´ç½ÅÀº Move Members ´ÙÀ̾ó·Î±×¿¡¼­ µÚ·Î °¥ °ÍÀÔ´Ï´Ù. °Å±â¼­ ´ç½ÅÀº °¡´ÉÇÑ ¼Ö·ç¼ÇÀ» À§ÇØ Å½»öÇÒ ¼ö ÀÖ½À´Ï´Ù:

  Àǽɽº·¯¿î ¸â¹ö¸¦ À̵¿ÇÏÁö ¾Ê½À´Ï´Ù(¿©±â- f1());

  ¶ÇÇÑ ¸â¹ö¿Í °ü·ÃµÈ ´Ù¸¥ °ÍÀ» À̵¿ÇÕ´Ï´Ù. (¿©±â- f2())l;

  Move Members  ¸®ÆÑÅ丵À» Ãë¼ÒÇϰí, ´ç½ÅÀÇ Äڵ带 ¼öµ¿À¸·Î Á¤Á¤Çϰí, ¿øÇÏ´Â ¸â¹ö¸¦ ´Ù½Ã ¿Å±â·Á°í ÇÕ´Ï´Ù.

 

¸¸ÀÏ ´ç½ÅÀÌ Continue¸¦ ´©¸£¸é, ¿øÇÏ´Â ¸â¹ö´Â ¿Å°ÜÁú °ÍÀÌÁö¸¸ ÄÄÆÄÀÏ Çϱâ À§Çؼ­ ´ç½ÅÀº Äڵ带 ¼öµ¿À¸·Î °¡Áö°í ÀÖÀ» °ÍÀÔ´Ï´Ù.